iT邦幫忙

2022 iThome 鐵人賽

DAY 3
1
AI & Data

30天AI馴獸師之生存日記系列 第 3

【Day 03】關於 Transformer 的 positional encoding 的一些思考

  • 分享至 

  • xImage
  •  

一直覺得 Attention is all you need 也就是提出 Transformer 的那篇 paper,裡面提到 positional encoding 的想法很有趣。
剛好在 HW5 的 report 中,有一個題目是關於 position embedding 的探索如下:

Given a (N x D) positional embeding lookup table, you aim to get a (N x N) “similarity matrix” by calculating similarity between different pairs of embeddings in the table. You need to visualize the similarity matrix and briefly explain the result. In this problem, we focus on the positional embeddings of the decoder .

於是我用下列這段 code 取出 decoder 的 positional embedding:

pos_emb = model.decoder.embed_positions.weights.cpu().detach()

並將之可視化如下:
https://ithelp.ithome.com.tw/upload/images/20220918/20152668HdaXoepzn8.png
可以發現在計算 1026 個 position embedding 之間的 cosine similarity 之後,和自己的位 置的embedding 的相似度是最高的(diagonal 上的值都是1),而距離自己位置越遠的 positional embedding 的相似度就越低,所以呈現從 diagonal 向兩旁遞減的趨勢。

這是因為 Transformer 採用 sinusoidal function 來 encode positional information 如下:
https://ithelp.ithome.com.tw/upload/images/20220918/20152668h2ocVzoqKl.png
所以每個 position embedding 會長的像下面這個矩陣:
https://ithelp.ithome.com.tw/upload/images/20220918/20152668YDnkRiwetX.png
他們使用這個 function 可以讓 model 很容易地學會 token 之間的 relative positional information,因為任意的 pt+φ 和 pt 之間可以用一個 linear function 來轉換:
https://ithelp.ithome.com.tw/upload/images/20220918/20152668AbiHOiKsyz.png
因此這邊如果我們把問題簡化,positional embedding size 設為 2,那下一個字的 positional embedding 就相當於把前一個字的 embedding 做逆時針旋轉,因此距離越遠的字,embedding 的夾角越大, cosine similarity 自然也就會越低了。


上一篇
【Day 02】啊哈 moment! | Adversarial Attack | HW10 思路
下一篇
【Day 04】有了會 self-adjusted 的 optimizer(如:Adagrad, Adam),我還需要 learning rate scheduler 嗎?
系列文
30天AI馴獸師之生存日記15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言